// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef UI_VIEWS_TEST_COMBOBOX_TEST_API_H_
#define UI_VIEWS_TEST_COMBOBOX_TEST_API_H_

#include "base/macros.h"

namespace gfx {
class Size;
}

namespace ui {
class MenuModel;
}

namespace views {
class Combobox;

namespace test {

    // A wrapper of Combobox to access private members for testing.
    class ComboboxTestApi {
    public:
        explicit ComboboxTestApi(Combobox* combobox)
            : combobox_(combobox)
        {
        }

        // Activates the Combobox menu item at |index|, as if selected by the user.
        void PerformActionAt(int index);

        // Installs a testing views::MenuRunnerHandler to test when a menu should be
        // shown. The test runner will immediately dismiss itself and increment the
        // given |menu_show_count| by one.
        void InstallTestMenuRunner(int* menu_show_count);

        // Accessors for private data members of Combobox.
        gfx::Size content_size();
        ui::MenuModel* menu_model();

    private:
        Combobox* combobox_;

        DISALLOW_COPY_AND_ASSIGN(ComboboxTestApi);
    };

} // namespace test

} // namespace views

#endif // UI_VIEWS_TEST_MENU_RUNNER_TEST_API_H_
